package com.j1ay.forum.service;


import com.j1ay.forum.model.dto.params.PageParams;
import com.j1ay.forum.model.dto.params.RegisterParams;
import com.j1ay.forum.model.dto.params.UpdateUserParams;
import com.j1ay.forum.model.pojo.JwtUser;
import com.j1ay.forum.model.pojo.po.User;
import com.j1ay.forum.model.pojo.vo.CodeVo;
import com.j1ay.forum.model.pojo.vo.LoginUserVo;
import com.j1ay.forum.model.pojo.vo.Result;

/**
 * @Author J1ay
 * @Date 2021/12/15 14:48
 * @Description
 */

public interface UserService {


    JwtUser findUserByUseId(Long userId, String authToken);

    /**
     * 返回类型是UserVo
     * @param username
     * @return
     */
    LoginUserVo findUserVoById(String username);

    /**
     * 根据账号密码查询用户
     * @param username
     * @return
     */
    User findUserById(String username);

    /**
     * 根据id查询User信息
     * @param id
     * @return
     */
    LoginUserVo findUserByUserId(Long id);

    /**
     * 检测手机号和昵称是否被注册过
     * @param username
     * @param nickname
     * @return
     */
    int findUserByAccount(String username, String nickname);

    /**
     *
     * @param user
     * @return
     */
    boolean saveUser(User user);

    /**
     *
     * @param registerParams
     * @return
     */
    Result register(RegisterParams registerParams);

    /**
     * 修改用户个人信息
     * @param updateUserParams
     * @return
     */
    Result updateSelf(UpdateUserParams updateUserParams);

    /**
     * 更新用户登录时间
     * @param user
     */
    void lastLogin(User user);

    /**
     * 权限修改用户信息
     * @param user
     * @return
     */
    Result updateUser(User user);

    /**
     * 删除用户
     * @param id
     * @return
     */
    Result delete(Long id);

    /**
     * 获取个人用户信息
     * @param id
     * @return
     */
    Result getSelf(Long id);

    /**
     * 上传图片更新头像
     * @param fileName
     * @param userId
     * @return
     */
    int uploadTx(String fileName, Long userId);

    /**
     * 获取用户个人浏览量点赞数等数据
     * @param username
     * @return
     */
    Result getData(String username);

    /**
     * 分页查询用户列表
     * @param pageParams
     * @return
     */
    Result getUserList(PageParams pageParams, Long RoleId);

    /**
     * 禁用或解禁账号
     * @param userId
     * @return
     */
    Result lockUser(Long userId);

    /**
     * 获取验证码，绑定uuid
     * @return
     */
    CodeVo getCode();
}
